package com.tutos.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

@Entity
@NamedQueries({
	@NamedQuery(name="getAllMensajes", query="SELECT men FROM Mensaje men"),
	@NamedQuery(name="getAllMensajesRecibidos", query="SELECT m FROM Mensaje m JOIN m.receptor r WHERE r.id=:id"),
	@NamedQuery(name="getAllMensajesEnviados", query="SELECT m FROM Mensaje m JOIN m.emisor e WHERE e.id=:id")
})
public class Mensaje implements Serializable{
	
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
	
	@Column(name = "asunto")
	private String asunto;

	@Lob
	@Column(name = "contenido", columnDefinition="CLOB NOT NULL")
	private String contenido;
	
	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="emisor")
	private Persona emisor;
	
	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="receptor")
	private Persona receptor;
	
	@Column(name = "fecha_enviado")
	private Date fechaEnviado;
	
	public Date getFechaEnviado() {
		return fechaEnviado;
	}

	public void setFechaEnviado(Date fechaEnviado) {
		this.fechaEnviado = fechaEnviado;
	}

	public Long getId() {
		return id;
	}
	
	public void setId(Long id) {
		this.id = id;
	}
	public String getAsunto() {
		return asunto;
	}
	public void setAsunto(String asunto) {
		this.asunto = asunto;
	}
	public String getContenido() {
		return contenido;
	}
	public void setContenido(String contenido) {
		this.contenido = contenido;
	}
	public Persona getEmisor() {
		return emisor;
	}
	public void setEmisor(Persona emisor) {
		this.emisor = emisor;
	}
	public Persona getReceptor() {
		return receptor;
	}
	public void setReceptor(Persona receptor) {
		this.receptor = receptor;
	}
	
}
